package com.gxa.service.system.impl;

import com.gxa.mapper.RoleMapper;
import com.gxa.service.system.RoleService;
import com.gxa.vo.MenuVo;
import com.gxa.vo.RoleVo;
import com.gxa.vo.RoleVo1;
import com.gxa.vo.RoleVo2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {
    @Autowired
    private RoleMapper roleMapper;

    @Override
    public List<RoleVo> queryAll() {
        List<RoleVo> roleVos = roleMapper.queryAll();
        return roleVos;
    }

    @Override
    public List<RoleVo> queryRoleByName(String name) {
        List<RoleVo> roleVos = roleMapper.queryRoleByName(name);
        return roleVos;
    }

    @Override
    public RoleVo2 queryRoleById(Integer id) {
        RoleVo2 roleVo = roleMapper.queryRoleById(id);
        List<MenuVo> menuVos1 = roleMapper.selRoleMenu(id);
        System.out.println(menuVos1);
        List<Integer> menuVos =new ArrayList<>();
        for(MenuVo menuVo : menuVos1){
            menuVos.add(menuVo.getId());
        }
        roleVo.setMenus(menuVos);
        return roleVo;
    }

    @Override
    public Integer delRole(Integer id) {
        Integer integer = roleMapper.delRole(id);
        return integer;
    }

    @Override
    public void updateRoleStatus(Integer id, Integer status) {
        roleMapper.updateRoleStatus(id,status);
    }

    @Override
    public List<String> selAllMenu1() {
        List<String> list=new ArrayList<>();
        for(MenuVo menuVo : roleMapper.selAllMenu()){
            list.add(menuVo.getName());
        }
        return list;
    }

    @Override
    public void addRoleMenu(Integer r_id, Integer m_id) {
        roleMapper.addRoleMenu(r_id,m_id);
    }

    @Override
    public Integer addRole(RoleVo1 roleVo) {
        Integer integer = roleMapper.addRole(roleVo);
        return integer;
    }

    @Override
    public void updateRole(RoleVo1 roleVo) {
        roleMapper.delRoleMenu(roleVo.getId());
        for(Integer menuVo : roleVo.getMenus()){
            roleMapper.addRoleMenu(roleVo.getId(),menuVo);
        }
        roleMapper.updateRole(roleVo);
    }

    @Override
    public List<MenuVo> selAllMenu() {
        List<MenuVo> menuVos = roleMapper.selAllMenu();
        return menuVos;
    }

}
